package com.group1.bookmanagement.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.group1.bookmanagement.domain.Label;
import com.group1.bookmanagement.domain.User;

public interface UserService {

	/**
	 * 新增
	 * @param user
	 */
	void saveUser(User user);
	
	/**
	 * 删除
	 * @param user
	 */
	void deleteUser(User user);
	
	/**
	 * 修改
	 * @param user
	 */
	void updateUser(User user);
	
	/**
	 * 忘记密码
	 * @param request
	 * @param user
	 */
	void forgotPassword(HttpServletRequest request, User user);
	
	/**
	 * 修改密码
	 * @param user
	 */
	void changPassword(User user);
	
	/**
	 * 查询
	 * @param id
	 * @return
	 */
	User getUser(Integer id);
	
	/**
	 * 登录
	 * @param user
	 * @return
	 */
	User login(User user);
	
	/**
	 * 自动登录
	 * @param credential
	 * @return
	 */
	User autoLogin(String credential);
	
	/**
	 * 查询所有
	 * @param offset 起始数据位置
	 * @return
	 */
	List<User> listUser(int offset);
	
	/**
	 * 用户名是否存在
	 * @param username
	 * @return
	 */
	boolean isUsernameExist(String username);
	
	/**
	 * 通过用户名查询用户
	 * @param username
	 * @return
	 */
	User findUserByUsername(String username);
	
	/**
	 * 添加感兴趣的标签
	 * @param user
	 * @param label
	 */
	void addLabel(User user, Label label);
	
	/**
	 * 移除标签
	 * @param user
	 * @param label
	 */
	void removeLabel(User user, Label label);
}
